# # """ 移动端环境配置
# # 1.配置 Java 环境；
# # 2.Android SDK配置
#   2.1 wondows
#       把 Android SDK 包解压到指定的路径；
# #     配置 Android SDK 的环境变量；
#   2.2mac
#       /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
#       brew  install android-platform-tools

# # 4.安装appium -> 是用于实现移动端的 UI自动化，appium 是基于selenium的二次开发
# # 4.1.安装appium方式一（安装有界面的桌面版appium): 去github上下载安装包
# # 4.2.安装appium方式二（安装没有界面的appium):
#       安装node.js(Appium 是通过node.js编写的）
#       npm install -g appium
# # 4.3.命令行的appium服务和桌面版本的只需要启动一个即可，优先推荐桌面版本的；

# # 5.下载安卓模拟器mumu
# # 6.安装python的appium
#   pip install Appium-Python-Client

# # 常用 adb 命令介绍：
# # 1. 查看已经连接的设备: adb devices
# # 2. 把设备连接到电脑：adb connect 127.0.0.1:7555
# # 3. 罗列出所有已经安装的包名：adb shell pm list packages
# # 4. 罗列出所有已经安装的第三方的包名：adb shell pm list packages -3
# # 5. 清理指定app的缓存：adb shell pm clear <package>
# # 6. 卸载指定的app：adb uninstall <package>
# # 7. 安装指定路径的app: adb install <apk_path>  例如：adb install C:\Users\37210\Desktop\xueqiu12.8.apk
# 【获取app包名，启动页名称】  adb shell dumpsys window | findstr mCurrent
# # 8. 练习：通过adb命令安装雪球app，然后再通过adb卸载掉
# # 9. 通过adb命令进行截图：adb shell screencap <filename>
# # 10.练习：截取雪球app首页的图片保存到Download文件夹下以test.png存储
# # 11.从移动端把图片/文件推送到本地电脑：adb pull <phone_path> <pc_path>
# # 12.练习：把刚才截取的图片，推送到自己本地指定目录
# # 13.把pc端的文件推送到移动端：adb push <pc_path> <phone_path>
# # 14.练习：把pc端指定文件推送到移动端

# # appium 的基本使用：
# # 1.启动 appium 服务，两种方法选其一即可：方法一、在命令行执行 appium; 方法二、双击appium桌面版图标，点击【start server】
# # 2.把移动端设备与appium所在主机建立连接：adb connect 127.0.0.1:7555
# # 3.在 python 端编写代码来实现对指定app的交互操作；
# # 4.对app中页面元素进行交互 -> 对app页面元素实现定位；
# # 5.如何对app端进行元素的查看与定位，方法一：用appium自带的工具进行查看
# # 6.如何用appium（桌面版本的）自带的工具进行查看与定位：1.启动appium inspector 工具；2.输入capability,
# # 掌握4个关键参数 {  "platformName": "Android",  "deviceName": "emulator-5554",  "appPackage": "com.xueqiu.android",
# # "appActivity": "view.WelcomeActivityAlias"} platformName -> 被测平台名称；deviceName -> 设备名称（自定义）；appPackage ->
# # 要测试的包名；appActivity -> 被测app的启动页面
# # 7.移动端定位方式：
# # id 定位(resource-id)： driver.find_element(By.ID,
# # "com.xueqiu.android:id/tab_icon") xpath定位：drive.find_element(By.XPATH, "//*[@text='我的']") accessibility_id 定位(
# # content-desc): driver.find_element_by_accessibility_id("xxxx")
# # 练习：给移动端编写一个xpath定位通过text属性实现定位text的文本是【登录】的元素，用精确定位和模糊匹配两种 8.通过代码实现对指定app页面元素进行交互 """
# # 模拟手势操作：通过TouchAction(driver).press(x,y).wait(1000).move_to(x,y).release().perform
# # 通过方法swipe()来实现页面滑动：swipe(start_x,start_y,end_x,end_y,200)
#
# from appium import webdriver
# from appium.webdriver.common.mobileby import MobileBy as By
# from time import sleep
# from appium.webdriver.common.touch_action import TouchAction
#
# # app的初始化,定义capability,传入四个参数
# desired_caps = {}
# desired_caps["platformName"] = "Android"
# desired_caps["deviceName"] = "emulator-5554"
# desired_caps["appPackage"] = "com.xueqiu.android"
# desired_caps["appActivity"] = "view.WelcomeActivityAlias"
#
# # Remote 中的参数：Remote -> appium-server 所在的IP和端口号
# # 问题：假如我们把appium-server部署在了非本地，例如appium-server在测试服务器上运行，此时url -> 测试服务器的IP:4723/wd/hub
# driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# # 设置隐式等待时间
# driver.implicitly_wait(10)
#
# # 关闭升级提醒
# driver.find_element(By.XPATH, "//*[@resource-id='com.xueqiu.android:id/image_cancel']").click()
# # 同意协议
# driver.find_element(By.XPATH, "//*[@text='同意']").click()
# # 点击【我的】进入我的页面
# driver.find_element(By.XPATH, "//*[@text='我的']").click()
# # 点击【账号密码登录】进入登录页面
# driver.find_element(By.XPATH, "//*[@text='帐号密码登录']").click()
# # 在登录页面输入账号
# driver.find_element(By.XPATH, "//*[@text='请输入手机号或邮箱']").send_keys("13262506790")
# # 在登录页面输入密码
# driver.find_element(By.XPATH, "//*[@resource-id='com.xueqiu.android:id/login_password']").send_keys("1234567a")
# # 点击【登录】
# driver.find_element(By.XPATH, "//*[@text='登录']").click()
# sleep(3)
# # 点击【雪球】
# driver.find_element(By.XPATH, "//*[@text='雪球']").click()
# sleep(5)
#
#
# # 模拟手势操作横向滑动，从x=33 滑动到 x=701 (固定y轴不变，只改变x，就能实现左右滑动)
# # TouchAction(driver).press(x=33, y=607).move_to(x=701, y=607).release().perform()
# # 模拟手势操作纵向滑动，滑动3次
# # for i in range(3):
# #     TouchAction(driver).press(x=342, y=1046).wait(1000).move_to(x=342, y=234).release().perform()
# #     sleep(2)
# for i in range(3):
#     driver.swipe(start_x=342,start_y=1046,end_x=342, end_y=234,duration=2000)
# sleep(5)
# # 练习：在雪球首页模拟向上滑动，连续滑动5次
#
# # driver关闭
# driver.quit()
#
# # 运行上述代码前置条件：1.appium-server 已经启动；2. 移动端已经与appium-server所在主机建立连接(adb connect 127.0.0.1:7555)
# # 练习：通过appium实现UI自动化，完成用户登录雪球

